package com.aiwiown.snackmq.cluster.util;

import com.aiwiown.snackmq.common.cluster.BrokerId;
import com.alipay.sofa.jraft.entity.PeerId;

/**
 * BrokerId 工具类，处理与 Raft 相关的 BrokerId 操作。
 * 
 * <p>该类提供了从 Raft Peer 创建 BrokerId 的方法，由于依赖 jraft，
 * 因此放在 cluster 模块中。</p>
 */
public class BrokerIdUtils {

    /**
     * 保留向后兼容的方法，但标记为 deprecated
     * 从 Raft Peer 创建 BrokerId，使用约定端口（Raft 端口 - 1）
     *
     * @param peer Raft Peer
     * @return BrokerId 实例
     * @deprecated 使用 fromRaftPeerWithBusinessPort 替代
     */
    @Deprecated
    public static BrokerId fromRaftPeer(PeerId peer) {
        return new BrokerId(peer.getIp(), peer.getPort() - 1);
    }

    /**
     * 从 Raft Peer 创建 BrokerId，使用指定的业务端口
     *
     * @param peer Raft Peer
     * @param businessPort 业务端口
     * @return BrokerId 实例
     */
    public static BrokerId fromRaftPeerWithBusinessPort(PeerId peer, int businessPort) {
        return new BrokerId(peer.getIp(), businessPort);
    }
} 